What is JProxy?
JProxy is a product that solves number of intercommunication
problems between Java Client and J2EE and/or CORBA Services.
JProxy provides HTTP Tunneling for well-known APIs: EJB, RMI,
JNDI, JMS and CORBA.
JProxy allows encapsulation of specifics of different J2EE and
CORBA servers.
JProxy is a thin customizable layer for access distributed services
and objects from Java. The layer may be applied for such APIs
as CORBA, EJB, RMI, JMS, JNDI. It encapsulates provider's specifics
of distributed services. It also allows customization of distributed
object access in order to achieve better performance, fail-over,
scalability. HTTP-Tunneling is one of application of the idea.
JProxy consist of Client-side part and Server-side part.
JProxy Server delegates JProxy Client's requests to appropriate
remote objects. JProxy Server keeps references to remote objects
and performs actual remote calls. When asynchronous communication
is used, JProxy Client behaves as a Server.
JProxy Server generates client stubs for remote object. The stubs
are completely independent from original stubs of remote object.
Any communication protocol may be used in the stubs. The stubs
may be customized in order to handle fail-over, load balancing,
or optimization of communication.
JProxy may integrate variety of EJB or CORBA Application Servers
from different providers into one system.
JProxy API provides for Applet or Application transparent access
thru any protocol to J2EE or CORBA resources. The Applet/Application
may function as a regular EJB/CORBA client without any awareness
of the virtual layer. The client may safely use his RMI/CORBA
environment plus extra features that will optimize the communication
with the server.
For instance, JProxy may automatically package number of orthogonal
requests to the server in one package and perform them as one
request, which tremendously reduces traffic on such slow connections
as Dial-up connection.
According to well-known EJB pattern, between web-client and EJB
Server has to be some web-server. This pattern makes impossible
using power of RMI or JMS on the Internet with its variety of
firewalls. The JProxy is a solution that still been consistent
with the pattern brings to the web-client full flavor of RMI/CORBA.
Simply saying, if you want to use EJB or CORBA from Applet, consider
using JProxy.
JProxy may seamlessly deliver asynchronous messages from JMS
to client thru any firewall. For HTTP client-side callback support
JProxy API utilizes two models. First it tries to use client-side
HTTP-server that starts instantly during JProxy-client initialization.
If it fails because of firewall, then JProxy automatically switches
to polling that is transparent for client. The asynchronous messages
are still seamlessly delivered to client in polling mode thru
asynchronous listeners.
JProxy utilizes polling by opening temporary socket which timeout
is equal to polling period. If any asynchronous messages are available
during the period, then the messages will be transferred to client
and the polling socket will be closed and reopened again immediately.
If no asynchronous message is available during the polling period
then socket will be timed-out and reopened immediately.
Te polling allows to receive messages as quick as they coming.
Delay of message delivery is not related with polling period time.
For example polling period time may be 1 minute, but JProxy client
is still able to receive messages coming every second.
Beside it, on the client each JMS message will be performed in
separate thread. More, client's requests are serialized to one
communication thread that allows saving client's resources. During
remote call client thread will be disabled till result comes back
from the server. So you may perform remote calls without consuming
power of your processor.
And all works in standard Java Security Sand-Box! You don't have
to change java policy or to use your Security Manager at all!
JProxy with RMI/EJB/JMS/CORBA was also successfully tested on
Microsoft's JVM under IE 5.5 which by default does not support
the APIs!
JProxy controls lifetime of clients' connections to Application
Server, resolves object's dependencies, automatically recycles
objects when connection is broken.
JProxy will help you to solve scalability or fail-over problems.
You may design cluster in your own way.
JProxy tries to use maximum from object-oriented technology. The
API allows implementing of different demands: Data Compression,
Security, Fautl-Tolerance. The developer may handle different
low-level communication protocols to reach the J2EE server resources.